// undefined 即是一个原始数据类型，也是一个原始值数据
// undefined 全局对象上的一个属性 window.undefined
// console.log(window.undefined)

// 不可写 writable: false
// window.undefined = 1;
// console.log(window.undefined)

// 不可配置 configurable: false
// delete windwo.undefined
// console.log(window.undefined)

// 不可枚举 enumerable:false
// for (var k in window) {
//   if (k === undefined) {
//     console.log(k)
//   }
// }

// 会报错，这个是不可重新定义的
// Object.defineProperty(window, 'undefined', {
//   enumerable: true,
//   writable: true,
//   configurable: true
// })

// 在全局作用域下 不能给undefined赋值
// var undefined = 1

// console.log(undefined) // undefined

// // 可以在局部作用可以
// function test () {
//   'use strict'
//   // undefined不是js的保留字和关键字
//   var undefined = 1
//   console.log(undefined) // 1
// }

// test()

// var a

// // 判断一个值有没有定义，一定要用全等或者用typeof
// if (a === undefined) {
//   console.log(true)
// } else {
//   console.log(false)
// }

// var a

// // 判断一个值有没有定义，一定要用全等
// if (typeof a === undefined) {
//   console.log(true)
// } else {
//   console.log(false)
// }

// console.log(typeof b) // undefined

// 判断a是否在window里是否有定义
// var a
// if ('a' in window) {
//   console.log(true)
// } else {
//   console.log(false)
// }

// void(0) //对0进行求职 一定会放回undeinfed

// var a, b, c
// a = void(b = 1, c = 2)
// console.log(a,b,c) // undefined 1 2

// <a href="javascript:void(0)" /> <a href="javascript:;" /> //阻止a标签跳转
// void(0)一定会表示window.undefined 在局部作用域里 undefined可能是会被当做变量名来用